package org.song.service.impl.common;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional;

@Transactional(rollbackFor = {RuntimeException.class , Exception.class})    // 使用spring框架声明式事务采用AOP面向切面编程注解横切到每个Transaction注解的类或者方法上使用ThreadLocal作线程隔离牺牲内存保证效率来保证
                                    //并发下的ConnectionJDBC连接对象的线程安全性
public abstract class AbstractBaseServiceImpl {
    // protected关键字设置了只有本类同包子类才可使用主要供子类使用
    // 各个Service业务实现层的基类作用域修饰符定义为protect限制子类可用
    // final修饰保证日志共享变量变量安全性
    // 定义为实例变量每个业务层实现类都有自己的日志工厂对象
    // 子类业务层实例化时，父类抽象类会被实例化 该日志工厂的this指代各个子类对象
    protected final Logger log = LoggerFactory.getLogger(this.getClass());

}
